아래에 주어진 데이터 세트가 있습니다. 이름 col1 col2 10.3 10.9 b 11 15 기음 20 7.2 d 6.2 6.2 전자 5.3 5.4 f 4.5 4.0 내 df의 col1과 col2를 비교하고 col2의 값이 col1에서 증가하면 col1과 col2 값을 비교하는 동안 내 열에 그 옆에 증가를 입력하고 싶습니다. 감소하는 경우 감소하고 변경 사항이 같으면 변경하지 않고 싶습니다. 그리고 나는 이와 같은 내 출력을 원한다. 이름 col1 col2 col3 10.3 10.9 증가 b 11 15 증가 c 20 7.2 감소 d 6.2 6.2 변경 없음 e 5.3 5.4 증가 f 4.5 4.0 감소
2021-01-31 08:15:21
dplyr 사용 : df %> % mutate (Col3 = ifelse (col2 == col1, "변경 없음", ifelse (col2> col1, "증가", "감소"))) 또는 @akrun이 제안한대로 case_when 사용 : df %> % mutate (Col3 = case_when (col1 == col2 ~ "변경 없음", col2> col1 ~ "증가", TRUE ~ "감소")) 결과: 이름 col1 col2 Col3 1 a 10.3 10.9 증가 2b 11.0 15.0 증가 3 c 20.0 7.2 감소 4 d 6.2 6.2 변경 없음 5 e 5.3 5.4 증가 6 f 4.5 4.0 감소 데이터: df <-structure (list (name = c ( "a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), 클래스 = "data.frame", row.names = c (NA, -6L)) | col1을 col2로 뺀 다음 부호를 사용하여 값을 할당 할 수 있습니다. df $ col3 <-c ( "감소", "변화 없음", "증가") [sign (df $ col1-df $ col2) + 2] df # 이름 col1 col2 col3 # 1 a 10.3 10.9 감소 # 2 b 11.0 15.0 감소 # 3 c 20.0 7.2 증가 # 4 d 6.2 6.2 변경 없음 # 5 e 5.3 5.4 감소 # 6 f 4.5 4.0 증가 또는 dplyr을 사용하여 case_when을 사용할 수 있습니다. 도서관 (dplyr) df %> % mutate (col3 = case_when (col1 == col2 ~ "변경 없음", col1> col2 ~ "증가", TRUE ~ "감소")) | 베이스 R df $ col3 <-with (df, ifelse (col1> col2, "감소", ifelse (col1